10 REM COPYRIGHT 1992 - COMPUTE PUBLICATIONS INTL LTD - ALL RIGHTS RESERVED 20 : 30 : 40 SA = 32000 50 IF PEEK(776)=32 AND PEEK(777)=131 THEN90 60 F$ = "MOB MASTER":GOSUB2210 70 F$ = "SPRITES":GOSUB2210 80 POKE SA+1528,96: SYS SA: POKE SA+1528,169 90 BD= 53280:BA= 53281:CC= 646:XR= 781:YR= 782:PL= 58636:MS= 13568 100 SE= SA+1329:AG= 32/45 110 POKE 650,128:PRINT CHR$(14) CHR$(8)"[154][147]" 120 POKE BD,6:POKE BA,6:/ZAP:/SPLIT 0 130 GOSUB1960:GOSUB1990 140 Y=4:D=192:S=62:POKE CC,15:M$="[175][175][175][175][175][175][175][175][175][175][175][175][175][175]":GOSUB1760 150 POKE CC,12:POKE 199,1:M$=" [205][207][194] [205][193][211][212][197][210] ":GOSUB1760 160 POKE CC,11:POKE 199,0:M$="[183][183][183][183][183][183][183][183][183][183][183][183][183][183]":GOSUB1760 170 Y=Y+1:POKE CC,7:M$="[195]OPYRIGHT 1992 [195][207][205][208][213][212][197] [208]UBLS [201]NTL [204]TD":GOSUB1760 180 Y=Y+1:POKE CC,1:M$=" [215]ELCOME TO [205][207][194] [205]ASTER, THE VERSATILE":GOSUB1810 190 M$="AND POWERFUL SPRITE CONTROLLER FOR YOUR":GOSUB1810 200 M$="[195]OMMODORE 64! [205][207][194] [205]ASTER ADDS 10 NEW":GOSUB1810 210 M$="[194][193][211][201][195] COMMANDS FOR EASIER SPRITE":GOSUB1810 220 M$="DEFINITION, POSITIONING, MOVEMENT,":GOSUB1810 230 M$="ANIMATION, AND OTHER MISCELLANEOUS":GOSUB1810 240 M$="FUNCTIONS. [217]OU CAN EVEN DO ALL OF THIS":GOSUB1810 250 M$="WITHOUT A SINGLE POKE STATEMENT!":GOSUB1810 260 Y=Y+1:POKE CC,14:M$="[208][204][197][193][211][197] [208][210][197][211][211] [193] [203][197][217] [212][207] [195][207][206][212][201][206][213][197]":GOSUB1760 270 POKE 198,0 280 GET A$:IF A$<>"" THEN300 290 GOSUB1920:GOTO280 300 POKE BA,0:POKE BD,0:/ZAP 310 PRINT"[147] [212]HE '[211][208][210][201][212][197]' COMMAND DEFINES MOST" 320 PRINT"OF THE CHARACTERISTICS OF A SPRITE." 330 PRINT"[215]ITH THE '[211][208][210][201][212][197]' COMMAND, YOU CAN DO" 340 PRINT"THE FOLLOWING TO A SPRITE:" 350 DL=2000:GOSUB2130 360 PRINT:PRINT"[155] * TURN IT ON OR OFF" 370 /SPRITE 0,1,1,0,0,0:/ANIMATE 0,255,0,202 380 /MOVSPR 0,160,140 390 DL=500:FORI=1TO5 400 /SPRITE 0,1:GOSUB2130 410 /SPRITE 0,0:GOSUB2130 420 NEXT 430 /SPRITE 0,1 440 PRINT:PRINT" * SET ITS FOREGROUND COLOR" 450 PRINT" (16 DIFFERENT COLORS IN TOTAL)" 460 FORI=0TO15 470 /SPRITE 0,*,I:FORZ=1TO200:NEXT 480 NEXT:/SPRITE 0,*,1 490 PRINT:PRINT" * SET ITS PRIORITY TO THE BACKGROUND" 500 M$="[219][219][219][219][219]":GOSUB2100 510 FORI=1TO5 520 /SPRITE 0,*,*,1:GOSUB2130 530 /SPRITE 0,*,*,0:GOSUB2130 540 NEXT:M$=" ":GOSUB2100 550 PRINT"[155] * EXPAND IT TO TWICE ITS ORIGINAL SIZE" 560 PRINT" HORIZONTALLY, VERTICALLY, OR BOTH" 570 /SPRITE 0,*,*,*,1:DL=1000:GOSUB2130 580 /SPRITE 0,*,*,*,0,1:GOSUB2130 590 /SPRITE 0,*,*,*,1,1:GOSUB2130 600 /SPRITE 0,*,*,*,0,0 610 PRINT:PRINT" * THE SPRITE CAN DISPLAY UP TO 3" 620 PRINT" DIFFERENT COLORS AT A TIME BY TURNING"; 630 PRINT" ON MULTICOLOR MODE." 640 FORI=1TO5 650 /ANIMATE 0,*,*,203:/SPRCOLOR 10,6:/SPRITE 0,*,*,*,*,*,1:GOSUB2130 660 /ANIMATE 0,*,*,202:/SPRITE 0,*,*,*,*,*,0:GOSUB2130 670 NEXT 680 PRINT:PRINT"[217]OU CAN DEFINE AND USE UP TO EIGHT" 690 PRINT"SPRITES AT A TIME.[158]" 700 Z=1:FORI=0TO7 710 IFZ=1THENZ=0:/ANIMATE I,*,*,202:GOTO730 720 Z=1:/ANIMATE I,*,*,203 730 /SPRITE I,1,I+1,0,0,0,Z:NEXT 740 Z=0:FORI=0TO320STEP38 750 /MOVSPR Z,I,140:Z=Z+1:NEXT 760 Y=24:GOSUB2140 770 /ZAP:PRINT"[147] [211]PRITE ANIMATION IS EASY WITH [205][207][194]" 780 PRINT"[205]ASTER. [212]HE '[193][206][201][205][193][212][197]' COMMAND TAKES" 790 PRINT"CARE OF ANIMATION IN [194][193][211][201][195]." 800 /SPRITE 0,1,1,0,0,0,1:/SPRCOLOR 2,6:/ANIMATE 0,4,0,204,207 810 /MOVSPR 0,160,148:DL= 2000:GOSUB2130 820 PRINT:PRINT"[155] [212]HE ANIMATION SPEED CAN BE CHANGED" 830 PRINT"FOR FASTER OR SLOWER ANIMATION. [212]HE" 840 PRINT"SPRITE CAN ANIMATE VERY FAST[155]..."; 850 /ANIMATE 0,0:DL=5000:GOSUB2130 860 PRINT"[157][157][157] OR VERY":PRINT"SLOWLY[155]." 870 /ANIMATE 0,64:DL=5000:GOSUB2130 880 PRINT:PRINT" [212]HE SPRITE CAN BE ANIMATED ALWAYS" 890 PRINT"OR JUST ONCE.[158]":/ANIMATE 0,*,1 900 Y=12:GOSUB2140 910 /ZAP:POKE BA,6:POKEBD,6:Y=9:X=0:GOSUB2090 920 PRINT" [217]OU CAN PLACE THE SPRITE ANYWHERE" 930 PRINT"ON THE SCREEN BY USING THE '[159][205][207][214][211][208][210]'" 940 PRINT"COMMAND. [217]OU CAN ALSO MOVE THE SPRITE" 950 PRINT"USING THE SAME COMMAND. [194]EST OF ALL," 960 PRINT"THE SPRITES CONTINUE TO MOVE AND" 970 PRINT"ANIMATE WHILE YOUR PROGRAM DOES" 980 PRINT"SOMETHING ELSE![154]" 990 DL=1000:GOSUB2130 1000 /SPRCOLOR 0,7 1010 Y=54:FORI=0TO7:C=I:IF I=6 THENC=15 1020 /SPRITE I,1,C,0,0,0,1:/ANIMATE I,4,0,208,210:/BOUNDARY I,0,0,255,0,344 1030 /MOVSPR I,0,Y:Y=Y+25:NEXT 1040 FORI=0TO7:/MOVSPR I,64#63-I:NEXT 1050 Y=17:GOSUB2140 1060 /ZAP:POKE BD,0:POKE BA,0 1070 X=0:Y=6:GOSUB2090 1080 /SPRCOLOR 9,0:/SPRITE 0,1,1,0,0,0,1:/ANIMATE 0,4,0,204,207 1090 /BOUNDARY 0,3,1,254,1,344 1100 PRINT" [212]HE DIRECTION OF THE SPRITE CAN ALSO" 1110 PRINT"BE DETERMINED BY THE '[205][207][214][211][208][210]' COMMAND." 1120 X=0:Y=9:GOSUB2090 1130 /MOVSPR 0,160,148:/MOVSPR 0,*#255:/SPRITE 0,1 1140 PRINT"[155][197]NTER THE DIRECTION OF THE SPRITE IN" 1150 PRINT"DEGREES; ENTER [158]-1[155] TO GO ON";:INPUTA 1160 IFA<0THEN1210 1170 A=A*AG:IFA>360THEN1120 1180 /MOVSPR 0,A#64 1190 IF PEEK(SE)AND1 THEN1190 1200 GOTO1120 1210 PRINT"[147]":Y=3:X=0:GOSUB2090:POKE BD,11:/SPRCOLOR 9 1220 PRINT" [197]ACH SPRITE HAS ITS OWN INDIVIDUAL" 1230 PRINT"BOUNDARY. [217]OU CAN USE THE '[194][207][213][206][196][193][210][217]'" 1240 PRINT"COMMAND TO DEFINE THE SPRITE'S BOUNDARY" 1250 PRINT"AND ITS ACTION AT A BOUNDARY." 1260 PRINT:PRINT"[155] [193]T THE BOUNDARY, THE SPRITE WILL DO" 1270 PRINT"ONE OF THE FOLLOWING ACTION:" 1280 DL=3000:GOSUB2130 1290 PRINT:PRINT" * WRAP AROUND" 1300 B=0:X1=0:X2=250:X3=0:X4=344:GOSUB2170 1310 PRINT:PRINT" * BOUNCE OFF THE BOUNDARY" 1320 B=1:X1=46:X2=231:X3=24:X4=320:GOSUB2170 1330 PRINT:PRINT" * STOP AT THE BOUNDARY" 1340 B=2:GOSUB2170 1350 PRINT:PRINT" * DISABLE AT THE BOUNDARY" 1360 B=3:GOSUB2170 1370 Y=19:GOSUB2140 1380 /ZAP:X=0:Y=10:GOSUB2090 1390 POKE 16383,0:POKE BD,6:POKE BA,6:POKE 53265,11 1400 PRINT" [217]OU CAN EVEN DISPLAY SPRITES ON THE" 1410 PRINT"TOP AND BOTTOM BORDER! [212]HE '[159][211][208][204][201][212]'" 1420 PRINT"COMMAND LETS YOU CHOOSE BETWEEN THE TWO" 1430 PRINT"SPLIT-SCREEN MODES.[154]" 1440 /IRQ 0:FORI=0TO3:/SPRITE I,1,7,0,0,0,1:/BOUNDARY I,0,0,250,0,344:NEXT 1460 /ANIMATE 0,4,0,192,193:/ANIMATE 1,0,0,194,195:/SPRCOLOR 0,1 1470 /MOVSPR 0,0,38:/MOVSPR 1,24,38 1480 /ANIMATE 2,0,0,198,199:/ANIMATE 3,4,0,196,197 1490 /MOVSPR 2,320,242:/MOVSPR 3,344,242 1500 FORI=4TO7:/SPRITE I,1,15,0,0,0,1:/BOUNDARY I,0,0,250,0,344:NEXT 1510 /ANIMATE 4,0,255,200:/ANIMATE 5,0,255,201 1520 /ANIMATE 6,0,255,200:/ANIMATE 7,0,255,201 1530 /MOVSPR 4,0,35:/MOVSPR 5,24,35:/MOVSPR 6,0,245:/MOVSPR 7,24,245 1540 /MOVSPR 4,64#64:/MOVSPR 5,64#64:/MOVSPR 6,64#63:/MOVSPR 7,64#63 1550 /MOVSPR 0,64#63:/MOVSPR 1,64#63 1560 /MOVSPR 3,192#63:/MOVSPR 2,192#63 1570 /IRQ 1:/SPLIT1:POKE 53265,27 1580 DL=2000:GOSUB2130:Y=15:GOSUB2140 1590 /ZAP:/SPLIT0:POKE 53265,27 1600 GOSUB1960:GOSUB1990 1610 Y=8:D=192:S=62:POKE CC,1 1620 M$=" [193]S YOU CAN SEE, THERE ARE ENDLESS":GOSUB1810 1630 M$="USES FOR [205][207][194] [205]ASTER. [217]OU CAN USE [205][207][194]":GOSUB1810 1640 M$="[205]ASTER TO WRITE A GOOD QUALITY ARCADE":GOSUB1810 1650 M$="GAME IN EITHER [194][193][211][201][195] OR MACHINE":GOSUB1810 1660 M$="LANGUAGE. [215]ITH [205][207][194] [205]ASTER, ONLY YOUR":GOSUB1810 1670 M$="IMMAGINATION IS THE LIMIT!":GOSUB1810 1680 Y=Y+1:POKE CC,3:M$="[208]RESS THE [211][208][193][195][197] [194][193][210] TO RESTART THIS":GOSUB1760 1690 M$="DEMO; PRESS ANY OTHER KEY TO QUIT.":GOSUB1760 1700 POKE 198,0 1710 GET A$:IF A$=" "THEN RUN 1720 IF A$<>"" THEN1740 1730 GOSUB1920:GOTO1710 1740 /ZAP:/SPLIT:SYS 65409:END 1750 ---- SUBROUTINES ---- 1760 GOSUB1820 1770 ZZ=LEN(M$):Z=40-ZZ:L=Z/2:R=L+ZZ 1780 /IRQ 0:/MOVSPR 0,D#S:/MOVSPR 1,D#S:/IRQ 1 1790 SYS MS,M$,Y,L,R,E:Y=Y+1:RETURN 1800 ---- 1810 GOSUB1820:L=0:R=LEN(M$):GOTO1780 1820 Z=Y*8+42 1830 IF D=192 THEN1870 1840 D=192:E=2:GOSUB1910 1850 /MOVSPR 0,368,Z:/MOVSPR 1,344,Z 1860 /ANIMATE 0,4,0,196,197:/ANIMATE 1,0,0,198,199:GOTO1900 1870 D=64 :E=43:GOSUB1910 1880 /MOVSPR 0,0,Z:/MOVSPR 1,24,Z 1890 /ANIMATE 0,4,0,192,193:/ANIMATE 1,0,0,194,195 1900 /SPRITE 0,1:/SPRITE 1,1:RETURN 1910 /MOVSPR 0,D#255:/MOVSPR 1,D#255:RETURN 1920 IF PEEK(SE)AND3 THEN RETURN 1930 Z=INT(RND(0)*180)+50:GOSUB1830 1940 /IRQ 0:/MOVSPR 0,D#S:/MOVSPR 1,D#S:/IRQ 1:RETURN 1950 ---- DEFINE PLANE ---- 1960 /SPRITE 0,1,7,0,0,0,1:/SPRITE 1,1,7,0,0,0,1:/SPRCOLOR 0,1 1970 /BOUNDARY 0,3,*,*,4,392:/BOUNDARY 1,3,*,*,4,392:RETURN 1980 ---- DEFINE CLOUDS ---- 1990 /IRQ 0:FORI=2TO7:/SPRITE I,1,12,1,0,0,1:NEXT 2000 /ANIMATE 2,255,*,200,200:/ANIMATE 3,255,*,201,201 2010 /ANIMATE 4,255,*,200,200:/ANIMATE 5,255,*,201,201 2020 /ANIMATE 6,255,*,200,200:/ANIMATE 7,255,*,201,201 2030 FORI=2TO7:/BOUNDARY I,0,*,*,0,400:NEXT 2040 /MOVSPR 2,0,120:/MOVSPR 3,24,120:/MOVSPR 2,64#63:/MOVSPR 3,64#63 2050 /MOVSPR 4,0,154:/MOVSPR 5,24,154:/MOVSPR 4,64#65:/MOVSPR 5,64#65 2060 /MOVSPR 6,0,160:/MOVSPR 7,24,160:/MOVSPR 6,64#64:/MOVSPR 7,64#64 2070 /IRQ 1:RETURN 2080 ---- PLOT CURSOR --- 2090 POKE 781,Y:POKE 782,X:SYS 58636:RETURN 2100 PRINT"[151]":FORI=0TO2 2110 Y=11+I:X=16:GOSUB2090 2120 PRINTM$:NEXT:RETURN 2130 FORZZ=1TODL:NEXT:RETURN 2140 POKE 198,0:X=4:GOSUB2090:PRINT"[208]LEASE PRESS A KEY TO CONTINUE"; 2150 GET A$:IFA$="" THEN2150 2160 PRINT"[147]";:RETURN 2170 DL= 500:GOSUB 2130 2180 FORI=0TO7:/SPRITE I,1,I+1,0,0,0,1:/BOUNDARY I,B,X1,X2,X3,X4 2181 /ANIMATE I,4,0,204,207:/MOVSPR I,*#255:/MOVSPR I,160,148:NEXT 2190 FORI=0TO7:X=INT(RND(1)*256):/MOVSPR I,X#64-I:FORZ=1TO100:NEXT:NEXT 2195 GET A$:IF A$=""THEN 2195 2196 FORI=0TO7:/MOVSPR I,*#255:/MOVSPR I,160,148:NEXT:RETURN 2200 /MOVSPR 0,*#255:/MOVSPR 0,160,148:RETURN 2210 SYS 57943 F$:POKE 185,255:POKE 780,0:SYS 65493:RETURN